Skip to content

Eslint 9 Upgrade#2773

Merged
rajsite merged 23 commits intomainfrom
eslint-v9
Dec 4, 2025
Merged

Eslint 9 Upgrade#2773
rajsite merged 23 commits intomainfrom
eslint-v9

Conversation

@rajsite
Copy link
Copy Markdown
Member

@rajsite rajsite commented Dec 1, 2025

Pull Request

🤨 Rationale

Adopts eslint v9 🎉

👩‍💻 Implementation

  • Switches to ni eslint config packages using flat config
  • Removes prettier-eslint which is in alpha builds for eslint v9 support, significantly hurt lint performance, and had major conflicts with eslint. Now that eslint libraries like stylistic are dedicated to style rules and eslint supports more formats such as markdown syntax and markdown style it's possible we don't need to rely on prettier long term. Either way we remove prettier for now to unblock eslint upgrades and can reconsider in the future
  • Linting performance was significantly improved so simplified the validate concurrency scripts to run all lint sequentially in parallel to tests. Now validate completes ~100s faster. It's also possible we will get another speed bump enabling multithreaded eslint but will save for a follow-up PR.
  • In the nimble private eslint-config-nimble package:
    • Created a shared lintNimbleConfig configuration that is used in each eslint config to make sure the eslint config file itself is linted and to give a spot for very general shared config in follow-up PRs (like markdown or json linting)
    • Created an angular lint similar to our typescript / component configs as shared config for the angular projects. This resolves issues where extending from a base config in the angular workspace is technically crossing a library boundary and triggered lint errors about reaching across package boundaries. Now we explicitly depend on a shared package.
  • Angular workspace changes:
    • The angular workspace root config is now for the config file in root, not the angular projects.
    • Each angular project uses the shared angularTypescriptNimbleConfig and angularTemplateNimbleConfig
  • Root workspace changes:
    • Added a top-level eslint config file for the config in root (the config file itself and beachball) but could also be used for linting markdown, etc. in the future.
    • Having a root eslint config also prevents the eslint vscode plugin from getting confused (errors in extension output logs) searching for the eslint config for files in root.

🧪 Testing

Note, see #2774 for CI results and source changes resulting from this config change.

✅ Checklist

  • I have updated the project documentation to reflect my changes or determined no changes are needed. A follow-up PR will remove prettier references and docs

gokulprasanth-ni and others added 18 commits November 28, 2025 17:44
Signed-off-by: gokulprasanth-ni <131153319+gokulprasanth-ni@users.noreply.github.com>
Signed-off-by: gokulprasanth-ni <131153319+gokulprasanth-ni@users.noreply.github.com>
…slint-to-flat-config

Signed-off-by: gokulprasanth-ni <131153319+gokulprasanth-ni@users.noreply.github.com>
Signed-off-by: gokulprasanth-ni <131153319+gokulprasanth-ni@users.noreply.github.com>
Signed-off-by: gokulprasanth-ni <131153319+gokulprasanth-ni@users.noreply.github.com>
@rajsite rajsite changed the title Eslint v9 Adopt eslint 9 Dec 3, 2025
@rajsite rajsite changed the title Adopt eslint 9 Eslint 9 Upgrade Dec 3, 2025
@rajsite rajsite mentioned this pull request Dec 3, 2025
1 task
rajsite and others added 2 commits December 4, 2025 14:22
# Pull Request

## 🤨 Rationale

This PR is the result of running format and cleaning up the result based
on the changes in #2773

Note: This PR is intended to review the source changes that are made and
will be merged into the `eslint-v9` branch, not `main`.

## 👩‍💻 Implementation

Ran `npm run format` and tweaked the results a but to remove whitespace
and address a couple rules that did not have automatic formatters.

## 🧪 Testing

Rely on CI to report no visual diffs and pass.

## ✅ Checklist

- [x] I have updated the project documentation to reflect my changes or
determined no changes are needed.

---------

Co-authored-by: rajsite <1588923+rajsite@users.noreply.github.com>
@rajsite rajsite enabled auto-merge (squash) December 4, 2025 21:13
@rajsite rajsite disabled auto-merge December 4, 2025 21:28
@rajsite
Copy link
Copy Markdown
Member Author

rajsite commented Dec 4, 2025

Bypassing other owners for lint only changes

@rajsite rajsite merged commit f8f9367 into main Dec 4, 2025
11 checks passed
@rajsite rajsite deleted the eslint-v9 branch December 4, 2025 21:29
@rajsite rajsite mentioned this pull request Dec 6, 2025
1 task
rajsite added a commit that referenced this pull request Dec 6, 2025
# Pull Request

## 🤨 Rationale

Removes inline pretter disable statements and updates docs to reference
eslint

Follow-up to #2773 


## 👩‍💻 Implementation

See above

## 🧪 Testing

Rely on CI

## ✅ Checklist

- [x] I have updated the project documentation to reflect my changes or
determined no changes are needed.

---------

Co-authored-by: rajsite <1588923+rajsite@users.noreply.github.com>
@rajsite rajsite mentioned this pull request Dec 6, 2025
1 task
rajsite added a commit that referenced this pull request Dec 8, 2025
# Pull Request

## 🤨 Rationale

Enables markdown linting, pretty much the recommended ruleset of: 
- https://github.com/ota-meshi/eslint-plugin-markdown-preferences
- https://github.com/ota-meshi/eslint-plugin-markdown-links

Follow-up to #2773 

## 👩‍💻 Implementation

Enabled the rules and fixed broken links (which are now checked
internally between files, neat!)

## 🧪 Testing

Rely on CI.

## ✅ Checklist

- [x] I have updated the project documentation to reflect my changes or
determined no changes are needed.

---------

Co-authored-by: rajsite <1588923+rajsite@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants